package pack0710.com;

//import com.sun.deploy.security.SandboxSecurity;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class UserManager {

    //用来存放所有注册的用户
    private static List<User> users = new ArrayList<User>() ;

    //存放所有的影碟
    private static List<Disk> disks = new ArrayList<>() ;

    private static Scanner scan = new Scanner(System.in) ;

    static{
        disks.add(new Disk(1,"神雕侠侣")) ;
        disks.add(new Disk(2,"天龙八部")) ;
        disks.add(new Disk(3,"叶问")) ;
        disks.add(new Disk(4,"笑傲江湖")) ;
        disks.add(new Disk(5,"射雕英雄传")) ;
        disks.add(new Disk(6,"给爸爸的信")) ;
        disks.add(new Disk(7,"越狱")) ;
        disks.add(new Disk(8,"西游记")) ;
    }


    //注册功能
    public static void register() {
        System.out.println("请输入姓名：");
        String name = scan.next() ;
        System.out.println("请输入密码：");
        String pass ;
        while(true){
            pass = scan.next() ;
            if(pass.trim().length() < 3 || pass.trim().length() >6){
                System.out.println("密码长度必须在3~6位之间,请重新输入：");
                continue;
            }
            System.out.println("请再次确认密码：");
            String repass = scan.next() ;
            if(!pass.equals(repass)){
                System.out.println("两次密码不一致，请重新输入：");
                continue;
            }
            break ;
        }
        //创建账号
        String id = Tools.getNewId() ;

        //需要将信息封装到user对象中
        User user = new User() ;
        user.setId(id);
        user.setName(name);
        user.setPass(pass);

        //将用户添加到集合中
        users.add(user) ;

        //提示用户注册成功
        System.out.println("恭喜你，注册成功，你的账号是：" + id);
    }

    //登录功能
    public static User login() {
        System.out.println("请输入账号：");
        String id = scan.next() ;
        System.out.println("请输入密码：");
        String pass = scan.next() ;

        //判断信息是否合法
        int n = users.indexOf(new User(id,pass)) ;
        return n < 0 ? null : users.get(n);
    }

    //显示所有影碟
    public static void showAllDisks() {
        print(disks);
    }

    private static void print(List<Disk> list ){
        System.out.println("编号\t名称\t状态");
        for (Disk   disk : list) {
            System.out.println(disk);
        }
    }

    //借阅影碟
    public static void borrow(User user) {
        //1. 让用户输入要借阅的影碟
        System.out.println("请输入要借阅的影碟编号：");
        int id = Tools.getDiskID() ;

        //2. 判断对应的影碟是否存在
        Disk disk = Tools.exists(disks,id) ;

        //3.判断影碟的状态
        if(disk != null){
            //影碟是存在的，还要判断状态
            if(!disk.isStatus()){
                System.out.println("抱歉，此影碟已经被借走了，请过一段时间再来借阅");
                return ;   //退出方法
            }else{
                //说明影碟可以借阅的
                //改变影碟的状态
                disk.setStatus(false);
                // 还需要将此影碟放入用户借阅的集合中
                user.getBorrows().add(disk) ;

                //提示用户借阅成功
                System.out.println("恭喜你，借阅成功");
            }
        }else
            System.out.println("抱歉，此影碟不存在，借阅失败");

    }

    //归还
    public static void returnDisk(User user) {
        //1. 让用户输入要归还的影碟
        System.out.println("请输入要归还的影碟编号：");
        int id = Tools.getDiskID() ;

        //2. 判断对应的影碟是否存在
        Disk disk = Tools.exists(user.getBorrows(),id) ;

        //3.判断影碟的状态
        if(disk != null){
            //影碟是存在的，
            //改变影碟的状态
            disk.setStatus(true);
            // 将影碟从借阅的集合中删除掉
            user.getBorrows().remove(disk) ;

            //提示用户归还成功
            System.out.println("恭喜你，归还成功");
        }else
            System.out.println("抱歉，此影碟不是在这借阅的，归还失败");
    }

    //查看借阅的影碟
    public static void lookBorrowDisks(User user) {
        System.out.println("您借阅的影碟信息如下：");
        print(user.getBorrows());
    }
}
